home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / djgpp / libsrc / c / sys / read.s < prev    next >
Encoding:
Text File  |  1994-05-01  |  1.3 KB  |  76 lines

  1. /* This is file READ.S */
  2. /*
  3. ** Copyright (C) 1993 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
  4. **
  5. ** This file is distributed under the terms listed in the document
  6. ** "copying.dj", available from DJ Delorie at the address above.
  7. ** A copy of "copying.dj" should accompany this file; if not, a copy
  8. ** should be available from where this file was obtained.  This file
  9. ** may not be distributed without a verbatim copy of "copying.dj".
  10. **
  11. ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
  12. ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. */
  14.  
  15.     .text
  16.     .globl _read
  17. _read:
  18.     pushl    %ebx
  19.     pushl    %esi
  20.     pushl    %edi
  21.     movl    16(%esp),%ebx
  22.     movl    20(%esp),%edx
  23.     movl    24(%esp),%ecx
  24.     cmpl    $4096,%ecx
  25.     ja    old_way
  26.  
  27.     movl    __go32_info_block+12,%esi
  28.     cmpl    $0,%esi
  29.     je    old_way
  30.  
  31.     movl    %esi,%edx
  32.     movb    $0x3f,%ah
  33.     int    $0x21
  34.     jb    error
  35.  
  36.     movl    20(%esp),%edi
  37.  
  38.     pushw    %ds
  39.     pushl    %eax
  40.     movl    __go32_info_block+12,%eax
  41.     call    dosmemsetup
  42.     movl    %eax,%esi
  43.     movw    %gs,%ax
  44.     movw    %ax,%ds
  45.     popl    %eax
  46.  
  47.     pushl    %eax
  48.     movl    %eax,%ecx
  49.     pushl    %ecx
  50.     shrl    $2,%ecx
  51.     cld
  52.     rep
  53.     movsl
  54.     popl    %ecx
  55.     andl    $3,%ecx
  56.     rep
  57.     movsb
  58.     popl    %eax
  59.     popw    %ds
  60.  
  61.     popl    %edi
  62.     popl    %esi
  63.     popl    %ebx
  64.     ret
  65.  
  66.  
  67. old_way:
  68.     movb    $0x3f,%ah
  69.     int    $0x21
  70. error:
  71.     popl    %edi
  72.     popl    %esi
  73.     popl    %ebx
  74.     jb    syscall_error
  75.     ret
  76.